/**
 ***********************************************************************************************************
 * 
 ***********************************************************************************************************
 * @file RBD3D9Tools.h
 ***********************************************************************************************************/

#ifndef __RBD3D9TOOLS_H__
#define __RBD3D9TOOLS_H__

#ifdef  HEADER_ONCE
#pragma HEADER_ONCE
#endif

#ifdef  HEADER_MSG
#pragma HEADER_MSG(RBD3D9Tools.h)
#endif

/***********************************************************************************************************
 * Includes
 ***********************************************************************************************************/
#include <RBMain/RBHardwareBuffer.h>
#include <RBMain/RBPixelFormat.h>
#include <RBMain/RBMatrix.h>

/***********************************************************************************************************
 * Forward declarations
 ***********************************************************************************************************/

struct D3DXMATRIX;
class RBTransform;

/***********************************************************************************************************
 * Classes
 ***********************************************************************************************************/

namespace RBD3D9Tools
{

    void  ComputeD3DFromRB          (D3DXMATRIX& d3dOut, const RBTransform& rbIn);
    void  ComputeD3DFromRB          (D3DXMATRIX& d3dOut, const float4x4& rbIn);
    void  ComputeD3DTransposeFromRB (D3DXMATRIX& d3dOut, const float4x4& rbIn);
    DWORD ComputeD3DUsageFromRB     (uint32 rbHardwareBufferUsage);
    DWORD ComputeD3DMapFlagsFromRB  (const RBHardwareBuffer::MapType& eMapType, RBHardwareBuffer* pBuffer);
    D3DFORMAT   ComputeD3DFormat    (RBPixelFormat ePixelFormat);
    void   ComputeD3DMSAA           (uint32 uiMSAA, D3DMULTISAMPLE_TYPE& d3dMS, DWORD& d3dMSQuality);
    D3DPOOL ComputeD3DPool          (RBHardwareBuffer::MemPool eMemPool );

};


/***********************************************************************************************************/

#endif // __RBD3D9TOOLS_H__